home *** CD-ROM | disk | FTP | other *** search
/ ftp.whtech.com / ftp.whtech.com.tar / ftp.whtech.com / datasheets and manuals / Hardware / WHT / scsi / dsr_sources_2_2001 / setpath < prev    next >
Text File  |  2006-10-19  |  2KB  |  134 lines

  1. * GPL Subprogram >27 - Set current pathname
  2. *
  3. * This procedure sets the current path
  4. *
  5. * Inputs:
  6. *     >834C - Unit #
  7. *     >834E - Pointer to path name
  8. *
  9. * Outputs:
  10. *     >8350 - Error status
  11. *                0 = No error
  12. *            non 0 = Error
  13. *
  14.  
  15. GPL27  ANDI R12,>FF00
  16.        AI   R12,24
  17.        LDCR @B02,4
  18.  
  19.        MOV  @>834C,R6        Get SCSI ID
  20.        MOV  R6,R1
  21.        ANDI R6,>0700
  22.        JEQ  G27ERR
  23.  
  24.        LI   R0,40
  25.        MOV  R6,R3
  26.        SRL  R3,8
  27.        DEC  R3
  28.        MPY  R0,R3
  29.        AI   R4,PATH
  30.  
  31.        MOV  @>834E,R2        Get pointer
  32.  
  33. * If the buffer is in VDP RAM, set the VDP read address
  34.  
  35.        ANDI R1,>8000
  36.        JNE  GPL27A
  37.  
  38.        SWPB R2
  39.        MOVB R2,@VDPWA
  40.        SWPB R2
  41.        MOVB R2,@VDPWA
  42.        NOP
  43.        MOVB @VDPRD,R3        Get path length
  44.        JMP  GPL27B
  45.  
  46. GPL27A MOVB *R2+,R3          Get path length
  47. GPL27B SRL  R3,8
  48.        CI   R3,39            Check path length
  49.        JH   G27ERR
  50.        CI   R3,5
  51.        JL   G27ERR
  52.        AI   R3,-5
  53.        S    R3,R0            Compute # of spaces to pad
  54.  
  55. * Make sure the path starts with "SCSx." and the unit
  56. * corresponds to what is in R6
  57.  
  58.        CI   R1,0
  59.        JNE  GPL27D
  60.  
  61.        MOVB @VDPRD,R1
  62.        SWPB R1
  63.        MOVB @VDPRD,R1
  64.        SWPB R1
  65.        CI   R1,'WD'
  66.        JEQ  G27BOK
  67.        CI   R1,'SC'
  68.        JNE  G27ERR
  69.  
  70. G27BOK CB   @VDPRD,@ASCIIS
  71.        JNE  G27ERR
  72.        MOVB @VDPRD,R1
  73.        AI   R1,->3000
  74.        CB   R1,R6
  75.        JNE  G27ERR
  76.        CB   @VDPRD,@PERIOD
  77.        JNE  G27ERR
  78.  
  79. * Now copy the path from the VDP buffer
  80.  
  81.        CI   R3,0
  82.        JEQ  GPL27G
  83. GPL27C MOVB @VDPRD,*R4+
  84.        DEC  R3
  85.        JNE  GPL27C
  86.        JMP  GPL27G
  87.  
  88.  
  89. * Here is the error routine.
  90. *
  91. G27ERR MOVB @B01,@>8350
  92.        JMP  G27RET
  93.  
  94. GPL27D
  95.        MOVB *R2+,R1
  96.        SWPB R1
  97.        MOVB *R2+,R1
  98.        SWPB R1
  99.        CI   R1,'WD'
  100.        JEQ  G27DOK
  101.        CI   R1,'SC'
  102.        JNE  G27ERR
  103.  
  104. G27DOK CB   *R2+,@ASCIIS
  105.        JNE  G27ERR
  106.        MOVB *R2+,R1
  107.        AI   R1,->3000
  108.        CB   R1,R6
  109.        JNE  G27ERR
  110.        CB   *R2+,@PERIOD
  111.        JNE  G27ERR
  112.  
  113. GPL27E CI   R3,0
  114.        JEQ  GPL27G
  115. GPL27F MOVB *R2+,*R4+
  116.        DEC  R3
  117.        JNE  GPL27F
  118.  
  119.  
  120. * Now pad the rest of the path with space characters
  121.  
  122. GPL27G
  123.        MOVB @SPACE,*R4+
  124.        DEC  R0
  125.        JNE  GPL27G
  126.  
  127.        MOVB @ZERO,@>8350
  128. G27RET LDCR @ZERO,4
  129.        ANDI R12,>FF00
  130.        INCT R11
  131.        RT
  132.  
  133. ASCIIS BYTE 'S'
  134.